package com.bjx.generator.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.bjx.common.core.domain.R;
import com.bjx.common.core.domain.group.Update;
import com.bjx.generator.domain.query.TemplateQuery;
import com.bjx.generator.domain.vo.TemplateVO;
import com.bjx.generator.service.ITemplateService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @desc: 代码模板
 * @author: liushuai
 * @date: 2022/9/8 15:07
 */
@RestController
@Tag(name = "代码模板控制器")
@RequestMapping("/tool/template")
public class TemplateController {
    @Autowired
    private ITemplateService templateService;


    /**
     * 新增代码模板
     * @param templateVO
     * @return: com.bjx.common.core.domain.R
     * @Author: liushuai
     * @Date: 2022/9/8
     */
    @PostMapping("/insertTemplate")
    @Operation(summary = "新增代码模板")
    public R insertTemplate(@RequestBody @Validated TemplateVO templateVO){
        templateService.insertTemplate(templateVO);
        return R.successMsg("新增模板成功");
    }

    /**
     * 修改代码模板
     * @param templateVO
     * @return: com.bjx.common.core.domain.R
     * @Author: liushuai
     * @Date: 2022/9/8
     */
    @PostMapping("/updateTemplateByTemplateId")
    @Operation(summary = "修改模板成功")
    public R updateTemplateByTemplateId(@RequestBody @Validated(Update.class) TemplateVO templateVO){
        templateService.updateTemplateByTemplateId(templateVO);
        return R.successMsg("修改模板成功");
    }

    /**
     * 分页查询代码模板
     * @param templateQuery
     * @return: com.bjx.common.core.domain.R<com.baomidou.mybatisplus.core.metadata.IPage<com.bjx.generator.domain.vo.TemplateVO>>
     * @Author: liushuai
     * @Date: 2022/9/8
     */
    @Operation(summary = "分页查询代码模板")
    @GetMapping("listTemplatePage")
    public R<IPage<TemplateVO>> listTemplatePage(TemplateQuery templateQuery) {
        IPage<TemplateVO> page = templateService.listTemplatePage(templateQuery);
        return R.success(page);
    }

    /**
     * 查询代码模板列表
     * @param templateQuery
     * @return: com.bjx.common.core.domain.R<com.baomidou.mybatisplus.core.metadata.IPage<com.bjx.generator.domain.vo.TemplateVO>>
     * @Author: liushuai
     * @Date: 2022/9/8
     */
    @Operation(summary = "查询代码模板列表")
    @GetMapping("listTemplate")
    public R<List<TemplateVO>> listTemplate(TemplateQuery templateQuery) {
        List<TemplateVO> list = templateService.listTemplate(templateQuery);
        return R.success(list);
    }

    /**
     * 根据id删除代码模板
     * @param templateId
     * @return: com.bjx.common.core.domain.R
     * @Author: liushuai
     * @Date: 2022/9/10 21:02
     */
    @Operation(summary = "根据id删除代码模板")
    @GetMapping("deleteTemplateByTemplateId")
    public R deleteTemplateByTemplateId(@RequestParam Long templateId) {
        templateService.deleteTemplateByTemplateId(templateId);
        return R.successMsg("删除代码模板成功");
    }

    /**
     * 根据id查询代码模板
     * @param templateId
     * @return: com.bjx.common.core.domain.R
     * @Author: liushuai
     * @Date: 2022/9/10 21:02
     */
    @Operation(summary = "根据id查询代码模板")
    @GetMapping("selectTemplateByTemplateId")
    public R selectTemplateByTemplateId(@RequestParam Long templateId) {
        TemplateVO vo = templateService.selectTemplateByTemplateId(templateId);
        return R.success(vo);
    }


}
